package com.hoshiicloud.saleorder.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * <p>
 * 订单信息
 * </p>
 *
 * @author zhangshuhu
 * @since 2019-06-03
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "OrderInfoDetailDTO对象", description = "订单信息")
public class OrderInfoDetailDTO implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    private Long companyid;
    /**
     * 平台id
     */
    @ApiModelProperty(value = "平台id")
    private Long platformid;
    /**
     * 店铺ID
     */
    @ApiModelProperty(value = "店铺ID")
    private Long storeId;
    /**
     * 主单ID
     */
    @ApiModelProperty(value = "主单ID")
    private Long mainid;
    /**
     * 主单编号
     */
    @ApiModelProperty(value = "主单编号")
    private String mainno;
    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    private String orderno;
    /**
     * 会员ID
     */
    @ApiModelProperty(value = "会员ID")
    private Long memberid;
    /**
     * 发货单号，发货时填写，可在订单查询查看
     */
    @ApiModelProperty(value = "发货单号，发货时填写，可在订单查询查看")
    private String invoiceNo;
    /**
     * 商家给客户的留言,当该字段有值时可以在订单查询看到
     */
    @ApiModelProperty(value = "商家给客户的留言,当该字段有值时可以在订单查询看到")
    private String toBuyer;
    /**
     * 付款备注，在订单管理里编辑修改
     */
    @ApiModelProperty(value = "付款备注，在订单管理里编辑修改")
    private String payNote;
    /**
     * 商品总金额
     */
    @ApiModelProperty(value = "商品总金额")
    private BigDecimal goodsAmount;
    /**
     * 配送费用
     */
    @ApiModelProperty(value = "配送费用")
    private BigDecimal shippingFee;
    /**
     * 保价费用
     */
    @ApiModelProperty(value = "保价费用")
    private BigDecimal insureFee;
    /**
     * 支付费用(,跟支付方式的配置相关，取值表payment)
     */
    @ApiModelProperty(value = "支付费用(,跟支付方式的配置相关，取值表payment)")
    private BigDecimal payFee;
    /**
     * 包装费用，取值表取值表pack
     */
    @ApiModelProperty(value = "包装费用，取值表取值表pack")
    private BigDecimal packFee;
    /**
     * 发票税额
     */
    @ApiModelProperty(value = "发票税额")
    private BigDecimal tax;
    /**
     * 应付款金额
     */
    @ApiModelProperty(value = "应付款金额")
    private BigDecimal orderAmount;
    /**
     * 订单实付金额
     */
    @ApiModelProperty(value = "订单实付金额")
    private BigDecimal amount;
    /**
     * 退款金额
     */
    @ApiModelProperty(value = "退款金额")
    private BigDecimal backAmount;
    /**
     * 金额金额
     */
    @ApiModelProperty(value = "金额金额")
    private BigDecimal coinsAmount;
    /**
     * 付款时间
     */
    @ApiModelProperty(value = "付款时间")
    private LocalDateTime paidtime;
    /**
     * 取消时间
     */
    @ApiModelProperty(value = "取消时间")
    private LocalDateTime cancelledtime;
    /**
     * 交付时间
     */
    @ApiModelProperty(value = "交付时间")
    private LocalDateTime deliverytime;
    /**
     * 收货时间
     */
    @ApiModelProperty(value = "收货时间")
    private LocalDateTime receivedtime;
    /**
     * 提交时间
     */
    @ApiModelProperty(value = "提交时间")
    private LocalDateTime createdtime;
    /**
     * 制单人
     */
    @ApiModelProperty(value = "制单人")
    private String createdby;
    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private LocalDateTime updatedtime;
    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private String updatedby;
    /**
     * 优惠券金额（抵扣金额）
     */
    @ApiModelProperty(value = "优惠券金额（抵扣金额）")
    private BigDecimal benefitsAmount;
    /**
     * 余额抵扣金额
     */
    @ApiModelProperty(value = "余额抵扣金额")
    private BigDecimal balanceAmount;
    /**
     * 积分数
     */
    @ApiModelProperty(value = "积分数")
    private Long points;
    /**
     * 是否删除
     */
    @ApiModelProperty(value = "是否删除")
    private Integer deleted;
    /**
     * 商品名称
     */
    @ApiModelProperty(value = "商品名称")
    private String spuName;
    /**
     * 规格
     */
    @ApiModelProperty(value = "规格")
    private String skuName;
    /**
     * spu no
     */
    @ApiModelProperty(value = "spu no")
    private String spuNo;
    /**
     * spu id
     */
    @ApiModelProperty(value = "spu id")
    private Long spuId;
    /**
     * sku id
     */
    @ApiModelProperty(value = "sku id")
    private String skuNo;
    /**
     * sku no
     */
    @ApiModelProperty(value = "sku no")
    private BigDecimal skuId;
    /**
     * 税率
     */
    @ApiModelProperty(value = "税率")
    private BigDecimal rate;
    /**
     * 税额
     */
    @ApiModelProperty(value = "税额")
    private BigDecimal rateamount;
    /**
     * spu属性 json
     */
    @ApiModelProperty(value = "spu属性 json")
    private String spuExtendProp;
    /**
     * spu规格 json
     */
    @ApiModelProperty(value = "spu规格 json")
    private String spuExtendSpec;
    /**
     * sku属性 json
     */
    @ApiModelProperty(value = "sku属性 json")
    private String skuExtendProp;
    /**
     * 售价
     */
    @ApiModelProperty(value = "售价")
    private BigDecimal saleUnitprice;
    /**
     * 单价(最终交易价)
     */
    @ApiModelProperty(value = "单价(最终交易价)")
    private BigDecimal unitprice;
    /**
     * 数量
     */
    @ApiModelProperty(value = "数量")
    private Long quantity;
    /**
     * 活动编号
     */
    @ApiModelProperty(value = "活动编号")
    private Long activityNo;
    /**
     * 是否自营
     */
    @ApiModelProperty(value = "是否自营")
    private Integer own;
    /**
     * 是否跨境
     */
    @ApiModelProperty(value = "是否跨境")
    private Integer Overseas;
    /**
     * 订单状态 0，未确认；1，已确认；2，已支付 3 分配中 4-已出货  5-已收货 6--售后 7-部分售后 8-已结算
     */
    @ApiModelProperty(value = "订单状态 0: 待付款 1: 订单取消 2: 清关中 3: 清关失败 4: 待发货 5: 待收货 6: 未提货 7: 未配送 8: 配送中 9: 退款成功 10:已收货 11: 已提货")
    private Integer orderStatus;
    /**
     * 商品配送情况 0，未发货；1，已发货 2-部分发货   3，已收货；4 部分收货 5 ，备货中
     */
    @ApiModelProperty(value = "商品配送情况 0，未发货；1，已发货 2-部分发货   3，已收货；4 部分收货 5 ，备货中")
    private Integer shippingStatus;
    /**
     * 支付状态 0-未支付 1-已支付 2-已退款 3-部分退款
     */
    @ApiModelProperty(value = "支付状态 0-未支付 1-已支付 2-已退款 3-部分退款")
    private Integer payStatus;
    /**
     * 售后状态  0-未售后 1-已售后 2-部分售后
     */
    @ApiModelProperty(value = "售后状态  0-未售后 1-已售后 2-部分售后")
    private Integer serviceStatus;

    /**
     * 退款状态
     */
    @ApiModelProperty(value = "退款状态 0-无需退款 1-未退款 2-已部分退款 3-已全额退款")
    private Integer refundStatus;

    /**
     * 退货状态
     */
    @ApiModelProperty(value = "退货状态  0-无需退货 1-未退货 2-已部分退货 3-已全部退货")
    private Integer returnGoodsStatus;

    /**
     * 售后订单参考
     */
    @ApiModelProperty(value = "售后订单参考")
    private String serviceRefno;
}
